package com.ymm.driver.api.facade;

import com.ymm.driver.api.constants.Entity.NoticeEntity;
import com.ymm.driver.api.utils.Result;

import java.util.List;

/**
 * @author guorui
 */
public interface DriverNoticeService {
    /**
     * 保存一条通知
     * @param notice 通知实体
     * @return 是否成功
     */
    Result<Boolean> saveNotice(NoticeEntity notice);

    /**
     * 阅读一条通知
     * @param noticeId 通知Id
     * @param driverId 司机Id
     * @return 阅读
     */
    Result<NoticeEntity> readNotice(Long noticeId, Long driverId);

    /**
     * 获取未读通知的数量
     * @param driverId 司机Id
     * @return 未读通知的数量
     */
    Result<Integer> countNoticeUnread(Long driverId);

    /**
     * 根据通知类型统计未读数量
     * @param driverId 司机Id
     * @param noticeType 通知类型
     * @return 对应类型未读通知的数量
     */
    Result<Integer> countNoticeUnreadByNoticeType(Long driverId, Integer noticeType);

//    /**
//     * 批量读取通知
//     * @param noticeIds 通知Id列表
//     * @return 读取通知
//     */
//    Result<List<NoticeEntity>> batchReadNotices(List<Integer> noticeIds);

    /**
     * 根据司机Id获取全部通知
     * @param driverId 司机Id
     * @return 全部通知
     */
    Result<List<NoticeEntity>> listAllNotices(Long driverId);

    /**
     * 根据司机Id和通知类型获取对应的通知
     * @param driverId 司机Id
     * @param noticeType 通知类型
     * @return 对应通知列表
     */
    Result<List<NoticeEntity>> listNoticesByNoticeType(Long driverId, Integer noticeType);

}
